# -*- coding: utf-8 -*-
# TencentBlueKing is pleased to support the open source community by making
# 蓝鲸智云 - PaaS 平台 (BlueKing - PaaS System) available.
# Copyright (C) 2017 THL A29 Limited, a Tencent company. All rights reserved.
# Licensed under the MIT License (the "License"); you may not use this file except
# in compliance with the License. You may obtain a copy of the License at
#
#     http://opensource.org/licenses/MIT
#
# Unless required by applicable law or agreed to in writing, software distributed under
# the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
# either express or implied. See the License for the specific language governing permissions and
# limitations under the License.
#
# We undertake not to change the open source license (MIT license) applicable
# to the current version of the project delivered to anyone in the future.

import re
from typing import Dict, Optional

from django.utils.functional import lazy
from django.utils.translation import get_language

TranslatedValue = Dict[str, str]


def to_translated_field(field_name: str, language_code: Optional[str] = None) -> str:
    """A function convect `field` to `field_{language_code}`

    >>> to_translated_field("field", language_code="zh-cn")
    "field_zh_cn"
    """
    language = language_code or get_language()
    return re.sub(r"[^a-z0-9_]+", "_", (f"{field_name}_{language}").lower())


def gettext(translated: TranslatedValue) -> str:
    return translated[get_language()]


gettext_lazy = lazy(gettext, str)
